package com.demo.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.demo.user.pojo.dto.*;
import com.demo.user.pojo.entity.User;
import com.demo.user.pojo.vo.LoginVO;
import com.demo.user.pojo.vo.UserVO;
import com.demo.user.result.PageResult;
import com.demo.user.result.Result;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author hxt
 * @since 2025-06-16
 */
public interface IUserService extends IService<User> {

    /**
     *  用户注册
     * @param registerDTO 注册信息
     * @return 是否成功
     */
    Result<String> register(RegisterDTO registerDTO);

    /**
     *  用户登录
     * @param loginDTO 登录信息
     * @return 登录结果
     */
    Result login(LoginDTO loginDTO);


    /**
     *  用户列表
     * @param pageQueryDTO 分页参数
     * @return 用户列表
     */
    Result<PageResult> userPageQuery(PageQueryDTO pageQueryDTO);

    /**
     *  根据id查询用户
     * @param userId 用户id
     * @return 用户信息
     */
    Result<UserVO> getUserById(Long userId);

    /**
     * 根据id修改用户信息
     * @param userId 用户id
     * @param updateDTO 修改信息
     * @return 是否成功
     */
    Result<String> updateUser(Long userId, UpdateDTO updateDTO);

    /**
     * 重置密码
     * @param resetPasswordDTO 重置密码相关数据
     * @return 是否成功
     */
    Result<String> resetPassword(ResetPasswordDTO resetPasswordDTO);

    /**
     * 修改权限
     * @param modifyPermissionsDTO 修改权限相关数据
     * @return 是否成功
     */
    Result<String> modifyPermissions(ModifyPermissionsDTO modifyPermissionsDTO);
}
